package com.dw.listener;

import org.apache.rocketmq.spring.annotation.ConsumeMode;
import org.apache.rocketmq.spring.annotation.MessageModel;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;

@Component
@RocketMQMessageListener(
        consumerGroup = "dw-consumer-group-orderly",
        topic = "topic-orderly",
        selectorExpression = "*", // 订阅所有Tag
        consumeMode = ConsumeMode.ORDERLY,  // 顺序消费模式
        messageModel = MessageModel.CLUSTERING
)
public class OrderlyConsumer implements RocketMQListener<String> {

    @Override
    public void onMessage(String message) {
        try {
            // 1. 处理消息（确保业务逻辑幂等）
            System.out.println("顺序消费消息: " + message);

            // 2. 模拟业务处理
            // TODO: 你的业务逻辑（注意：不要异步处理，否则会破坏顺序性）

        } catch (Exception e) {
            // 3. 如果处理失败，建议记录日志并人工干预
            // 注意：顺序消费下不要立即重试（会阻塞后续消息）
            e.printStackTrace();
        }
    }
}